home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1997
/
MacHack 1997.toast
/
Hacks
/
Hacks ’93
/
sort
/
Source
/
selection.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-06-17
|
1KB
|
49 lines
/*
Selection.c
Author: Paul Baxter.
This is a standard selection sort.
Here is how it works:
1) Start an incrementing loop (index1) from 0 to number of data - 1.
2) Init lowest to index1 data item.
3) Start an incrementing loop (index2) from index1 + 1 to number of data.
4) Compare lowest to index2 data item.
5) If index2 data item < lowest then set lowest to index2 data item.
6) End index2 loop.
7) If lowest != index1 then swap lowest and index1.
8) End index1 loop.
9) End.
*/
#include "sortdata.h"
void main(long maxdata, long* sortdata, swp sw, cmp cm, short* stopflag);
void main(long maxdata, long* sortdata, swp sw, cmp cm, short* stopflag)
{
long lowest, index1, index2, *pindex1, *pindex2, *plowest;
for (pindex1 = sortdata, index1 = 0; index1 < maxdata - 1; index1++, pindex1++) {
lowest = index1;
plowest = pindex1;
for (pindex2 = pindex1+1, index2 = index1 + 1; index2 < maxdata; index2++, pindex2++) {
if (*stopflag) {
return;
}
if ((*cm)(lowest, index2, *plowest, *pindex2) > 0) {
plowest = pindex2;
lowest = index2;
}
}
if (index1 != lowest) {
(*sw)(index1, lowest, pindex1, plowest);
}
}
}